﻿using System;
using System.Windows;

namespace kostenbuch
{
    /// <summary>
    /// Interaktionslogik für Window1.xaml
    /// </summary>
    public partial class form : Window
    {
        int pos = -1;
        Boolean edit = false;

        double d = 0.0;
        
        public form()
        {
            InitializeComponent();
            date.SelectedDate = DateTime.Today;
            
        }
        public form(Eintrag ein, int pos)
        {
            InitializeComponent();
            this.pos = pos;
            edit = true;

            confirm.Content = "Übernehmen";

            //Eintragsdaten in die Form uebertragen
            tb_title.Text = ein.getTitle();
            tb_betrag.Text = ein.getBetrag().ToString();
            cb_konto.SelectedIndex = Properties.Settings.Default.Konto.IndexOf(ein.getKonto());
            if (ein.getMonatlich() == true)
                cb_monatlich.IsChecked = true;
            if (ein.getAusgabe() == true)
                cb_direction.SelectedIndex = 0;
            else
                cb_direction.SelectedIndex = 1;
            date.SelectedDate = ein.getDatum();
            cb_kategorie.SelectedIndex = Properties.Settings.Default.Kategorie.IndexOf(ein.getKategorie());
            r.Text = ein.getNotiz();
        }

        private void Button_Click_Confirm(object sender, RoutedEventArgs e)
        {
            try
            {
                Eintrag ein_temp = new Eintrag();
                double betrag = 0.0;
                if (!tb_title.Text.Equals(""))
                    ein_temp.setTitle(tb_title.Text);
                else
                {
                    throw new Exception("Titel darf nicht leer sein");
                }
                //wenn double werte kein Komma enthalten, eingegebenen Punkt durch Komma ersetzen
                if (!d.ToString().Contains(","))
                    betrag = double.Parse(tb_betrag.Text.Replace('.', ','));
                //ansonsten eingegebenes Komma durch Punkt ersetzen
                else
                    betrag = double.Parse(tb_betrag.Text.Replace(',', '.'));
                ein_temp.setKonto(cb_konto.SelectedValue.ToString());
                if (cb_direction.SelectedIndex == 0 || (betrag < 0 && cb_direction.SelectedIndex == 1))
                    ein_temp.setAusgabe(true);
                if (cb_direction.SelectedIndex == 1 || (betrag < 0 && cb_direction.SelectedIndex == 0))
                    ein_temp.setAusgabe(false);
                if (betrag < 0)
                {
                    betrag = betrag * -1;
                }
                ein_temp.setBetrag(betrag);
                ein_temp.setMonatlich((bool)cb_monatlich.IsChecked);
                ein_temp.setDatum(date.SelectedDate.Value);
                ein_temp.setKategorie(cb_kategorie.SelectedValue.ToString());
                ein_temp.setNotiz(r.Text);

                //wenn ein Eintrag bearbeitet wurde, ueberschreiben, sonst einen Neuen erstellen
                if (edit)
                {
                    TablePage.updateEintrag(ein_temp, pos);
                    edit = false;
                }
                else
                {
                    TablePage.eintragList.Add(ein_temp);
                }
                MainWindow.unsaved = true;
                this.Close();
            }
            catch (Exception exc)
            {
                Console.Write(exc.Message);
                MessageBox.Show("Bitte Eingaben überprüfen!", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void Button_Click_Abbrechen(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void neue_kategorie_Click(object sender, RoutedEventArgs e)
        {
            KategorieHinzufügen formular = new KategorieHinzufügen();
            formular.ShowDialog();
            cb_kategorie.Items.Refresh();
        }
        private void neuesKonto_Click(object sender, RoutedEventArgs e)
        {
            KontoHinzufuegen formular = new KontoHinzufuegen();
            formular.ShowDialog();
            cb_konto.Items.Refresh();
        }
    }
}
